home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / wedits22.zip / WETAG.PAS < prev    next >
Pascal/Delphi Source File  |  1991-08-13  |  5KB  |  185 lines

  1. UNIT WETag; {$O+}
  2. { -- This is the Tag Lines unit of WWIVEdit 2.2
  3.   -- Last Updated: 8/13/91
  4.   -- Written By:
  5.   --   Adam Caldwell
  6.   --
  7.   -- This code is limited public domain.  See WWIVEDIT.PAS for details.
  8.   --
  9.   -- Purpose : Input/Manipulate the Taglines
  10.   --
  11.   -- Known Errors : None
  12.   --
  13.   -- Planned Enhancements: Clean Up Code, Add a FORCE option
  14.   --
  15.   -- }
  16. {$R-,V-,S-,B-,E-,N-}   { These Optomize things as much as possible }
  17.  
  18. INTERFACE
  19.  
  20. PROCEDURE EditTaglines;
  21.  
  22. IMPLEMENTATION
  23.  
  24. USES WEVars, WEInput, WEOutput, WEString, WEMisc;
  25.  
  26. PROCEDURE EditTaglines;
  27. { Edit and Select Taglines }
  28. CONST
  29.   NMethods = 6;
  30.   Methods : ARRAY[0..NMethods] OF String[40] = (
  31.     'Don''t use any Tagline                  ',
  32.     'Always use Tagline #1                  ',
  33.     'Always use Tagline #2                  ',
  34.     'Always use Tagline #3                  ',
  35.     'Rotate among defined Taglines          ',
  36.     'Choose one at random                   ',
  37.     'Don''t use Tagline for this message only');
  38. VAR
  39.   i  : integer;
  40.   ch : char;
  41.   TagS:string;
  42.   fun:edfun;
  43.   changed:boolean;
  44.   t:inforec;
  45.  
  46. BEGIN
  47.   t:=info;
  48.   changed:=false;
  49.   ClrScr;
  50.   FOR i:=1 TO 3 DO
  51.   BEGIN
  52.     Prompt(C5+'Tagline number '+C2);
  53.     CASE i OF
  54.       1 : print('one:');
  55.       2 : print('two:');
  56.       3 : print('three:');
  57.     END;
  58.     ansic('0');
  59.     IF info.Tagline[i]<>'' THEN BEGIN
  60.       PrintControlLine(info.TagLine[i]);
  61.       nl;
  62.     END
  63.     ELSE
  64.       Print(c1+'<<<None Entered>>>'+C0);
  65.     nl;
  66.   END;
  67.   FOR i:=0 TO NMethods DO
  68.   BEGIN
  69.     IF info.Method = i THEN Ansic('4') ELSE Ansic('1');
  70.     prompt(methods[i]);
  71.     ansic('0');
  72.     IF info.Method = i
  73.       THEN print(' <-- Currently Selected')
  74.       ELSE nl;
  75.   END;
  76.   REPEAT
  77.     StatusLine3(C2+'Tag Line: '+C1+'M'+C2+'ake, '+C1+'E'+C2+'rase, '+
  78.                 C1+'C'+C2+'hoose, '+C1+'Q'+C2+'uit [MEQ] > '+C1);
  79.     ch:=ReadSet(['M','E','Q','C',ESC]);
  80.     IF ch='E' THEN BEGIN
  81.       StatusLine3(C2+'Erase Tagline: '+c1+'1'+c2+', '+c1+'2'+c2+', '+c1+'3'+
  82.                   C2+', or '+C1+'A'+c2+'bort > ');
  83.       ch:=readset(['1'..'3','A',ESC,'Q']);
  84.       IF ch IN ['1'..'3'] THEN BEGIN
  85.         info.Tagline[ord(ch)-ord('0')]:='';
  86.         StatusLine2(c5+'Tagline '+c1+ch+c5+' erased');
  87.         gotoxy(1,3*(ord(ch)-ord('0')-1)+2);
  88.         ClrEol;
  89.         Print(c1+'<<<None Entered>>>'+C0);
  90.         changed:=true;
  91.         AfterNext:=ClrStatLine2;
  92.       END;
  93.     END;
  94.     IF ch='C' THEN BEGIN
  95.       i:=info.method;
  96.       REPEAT
  97.         GotoXY(1,10+i);
  98.         fun:=GetArrow;
  99.         ansic('1');
  100.         IF Fun IN [up,down] THEN
  101.           Prompt(methods[i]);
  102.         CASE Fun OF
  103.           Up : dec(i);
  104.           Down : inc(i);
  105.         END;
  106.         IF i<0 THEN i:=NMethods
  107.         ELSE IF i>NMethods THEN i:=0;
  108.         IF fun IN [Up,Down] THEN
  109.         BEGIN
  110.           GotoXY(1,10+i);
  111.           ansic('4');
  112.           prompt(methods[i]);
  113.         END;
  114.       UNTIL fun IN [Enter,NormalExit];
  115.       IF fun=Enter THEN BEGIN
  116.         if info.method<>i THEN changed:=true;
  117.         gotoxy(40,10+info.method);
  118.         clreol;
  119.         info.method:=i;
  120.         gotoxy(1,10+i);
  121.         print(C4+methods[i]+C0+' <-- Currently Selected');
  122.         IF info.selected>3 THEN info.selected:=1;
  123.       END
  124.       ELSE if i<>info.method THEN
  125.       BEGIN
  126.         print(c0+methods[i]);
  127.         gotoxy(1,10+info.method);
  128.         print(c4+methods[info.method]+c0);
  129.       END;
  130.     END;
  131.     IF ch='M' THEN BEGIN
  132.       StatusLine3(C2+'Enter Tagline.  Press '+C3+'Ctrl-Z'+C2+' when finished.');
  133.       TagS:=GetControlLine;
  134.       StatusLine2(c0);
  135.       PrintControlLine(TagS);
  136.       StatusLine3(C5+'Which Tagline do you want to save this under? [1,2,3,Q] > '+C1);
  137.       ch:=ReadSet(['1'..'3','Q']);
  138.       IF ch='Q' THEN BEGIN
  139.         StatusLine2(C2+'Nothing Saved...');
  140.         AfterNext:=ClrStatLine2;
  141.         ch:=#0;
  142.       END
  143.       ELSE BEGIN
  144.         changed:=true;
  145.         i:=Value(ch);
  146.         gotoxy(1,3*(i-1)+2);
  147.         PrintControlLine(TagS);
  148.         ClrEol;
  149.         info.Tagline[i]:=TagS;
  150.         StatusLine2(C0);
  151.       END;
  152.     END;
  153.   UNTIL ch IN ['Q',ESC];
  154.   IF changed THEN BEGIN
  155.     IF Info.method=5 THEN BEGIN
  156.         info.selected:=Random(3)+1;
  157.         IF Info.Tagline[info.selected]='' THEN BEGIN
  158.           FOR i:=1 TO 3 DO
  159.             IF info.tagline[i]<>'' THEN info.selected:=i;
  160.         END;
  161.     END
  162.     ELSE IF Info.method=4 THEN
  163.     BEGIN
  164.       Info.selected:=1;
  165.       FOR i:=3 DOWNTO 1 DO
  166.         IF info.tagline[i]<>'' THEN info.selected:=i;
  167.     END ELSE IF info.method<4 THEN
  168.       info.selected:=info.method;
  169.  
  170.     IF (Info.method IN [4,5]) AND (info.tagline[info.selected]='') THEN
  171.       info.selected:=1;
  172.     StatusLine3(c5+'Do you want to save your changes? [Yn] > ');
  173.     IF yn THEN BEGIN
  174.       SaveInfo;
  175.       StatusLine3(c5+'Saved.');
  176.     END ELSE BEGIN
  177.       StatusLine3(c2+'Not Saved.');
  178.       info:=t;
  179.     END;
  180.   END;
  181.   AfterNext:=ClrStatLine3;
  182. END;
  183.  
  184. END.
  185.